package com.dhecp.project.storage.service;

import java.util.List;
import java.util.Map;

import com.dhecp.common.core.domain.AjaxResult;
import com.dhecp.project.storage.domain.StockOpe;

public interface StockOpeService {

    /**
     *@Description: 查询指定单记录
     *@Param: nid 必要参数：当前 单据编码
     *@return: com.dhecp.project.storage.domain.PurchaseAddress
     *@Author: hlf
     *@date: 2022-05-09 9:40
     */
	StockOpe findByGuid(Map<String, Object> params) throws Exception;

    /**
     *@Description: 查询指定单nid的首记录
     *@Param: nid 必要参数：当前 单据编码
     *@return: com.dhecp.project.storage.domain.StockOpe
     *@Author: hlf
     *@date: 2022-05-09 9:40
     */
    StockOpe queryFirstRecord(Map<String, Object> params) throws Exception;

    /**
     *@Description: 查询指定单nid的整单录
     *@Param: nid 必要参数：当前 单据编码
     *@return: java.util.List<com.dhecp.project.storage.domain.StockOpe>
     *@Author: hlf
     *@date: 2022-05-09 9:41
     */
    List<StockOpe> queryListByNid(Map<String, Object> params) throws Exception;

    /**
     *@Description: 查询
     *@Param: [params]
     *@return: java.util.List<com.dhecp.project.storage.domain.StockOpe>
     *@Author: hlf
     *@date: 2022-05-09 9:41
     */
    List<StockOpe> queryList(Map<String, Object> params) throws Exception;

    /**
     *@Description: 保存
     *@Param: moduleTable 必要参数：功能唯一标识
     *@Param: infoMap 必要参数：非网格字段（包括头部、底部所有显示和隐藏的字段）
     *@Param: infoItems 必要参数：对应实体类的json格式字符串
     *@return: com.dhecp.common.core.domain.AjaxResult
     *@Author: hlf
     *@date: 2022-05-09 9:41
     */
    AjaxResult saveData(Map<String, Object> params);

    /**
     *@Description: 删除
     *@Param: [params]
     *@return: com.dhecp.common.core.domain.AjaxResult
     *@Author: hlf
     *@date: 2022-05-09 9:42
     */
    AjaxResult deleteData(Map<String, Object> params);

	/**
	 * 新增库存修改单
	 * @param params 必要参数：基础商品库对应实体类的json格式字符串
	 * @return
	 * @author DH-Xxj
	 */
	AjaxResult addStockOpeIn(String bid,
			String vGsBm,
			String vGsMc,
			String vGsJc,
			String productCode, Integer productNum,
			String locationHw,
			String locationKq,
			String locationArea,
			String remark
			);

	/**
	 * 新增库存修改单-出库
	 */
	AjaxResult addStockOpeOut(String bid, String guidStockControl, Integer productNum, String remark);

	/**
	 * 或许库存修改单号-新增用
	 */
	String getBidForAdd();

    
}
